home *** CD-ROM | disk | FTP | other *** search
/ Shareware Extravaganza - Disc 4 / Shareware Extravaganza - Over 25,000 Programs (The Ultimate Shareware Company)(Disc 4 of 4)(1993).iso / cad / eedraw.zip / EEDRAW.DOC < prev    next >
Text File  |  1990-04-18  |  25KB  |  570 lines

  1.         EEDRAW - Electrical Engineering Drawings
  2.         ----------------------------------------
  3.  
  4.   BECAUSE EEDRAW/EED-PS/EEDEPSON ARE LICENSED FREE OF CHARGE, I PROVIDE
  5. ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.
  6. EXCEPT WHEN OTHERWISE STATED IN WRITING, I GERSHON ELBER PROVIDE EEDRAW/
  7. EED-PS/EEDEPSON PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
  8. EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  9. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
  10. ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
  11. YOU. SHOULD THE EEDRAW/EED-PS/EEDEPSON PROGRAMS PROVE DEFECTIVE, YOU ASSUME
  12. THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13.  
  14.   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL GERSHON ELBER,
  15. BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES,
  16. OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  17. USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR A FAILURE
  18. OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY GERSHON ELBER)
  19. THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES,
  20. OR FOR ANY CLAIM BY ANY OTHER PARTY.
  21.  
  22. 1. INTRODUCTION
  23. ---------------
  24.  
  25. EEDraw is a simple parametric drawing program, specifically designed for
  26. EE (Electrical Engineering) type of drawing. The program fully allow new
  27. parametric types, through library mechanisms, and in fact all the EE types
  28. are defined this way. This library mechanism is extremely useful in defining
  29. new types and can be used for other applications other than EE.
  30.  
  31. The following graphic devices are supported for display: Hercules, VGA, EGA.
  32. The following printing devices are supported (via the printing drivers):
  33. EPSON compatible printers (8 pins), PostScript printers.
  34.  
  35. Usage: EEDraw [-z] [FileName[.EED]]
  36.  
  37. Options: [-z] Print version number and usage.
  38.  
  39. 2. INSTALATION
  40. --------------
  41.  
  42. For correct execution of the main program (EEDraw), the following files must
  43. exist in one of the path directories:
  44.  
  45. 1. EEDraw.exe
  46. 2. EEDraw.cfg
  47. 3. EEDraw.bnd
  48. 4. *.lib
  49.  
  50. For correct execution of the printer drivers (EED-PS, EED-Epsn), the following
  51. files must exists in one of the path directories (see also Appendix B):
  52.  
  53. 1. EED-PS.exe                1. EED-Epsn.exe
  54. 2. EED-PS.cfg                2. EED-Epsn.cfg
  55. 3. *.lib                3. *.lib
  56.  
  57. The library files (*.lib) are the same for the printer drivers and eedraw
  58. itself and should exist probably only once.
  59. See SETUP below shows how to change the setup of this programs.
  60. The default values should be enough to start and learn this program.
  61.  
  62. 3. SETUP
  63. --------
  64.  
  65. EEDraw set up is done through two files: EEDraw.cfg and EEDraw.bnd.
  66.  
  67. EEDraw.cfg
  68. ----------
  69.  
  70. This files contain global parameters that should be selected and set only
  71. once, in final installation stage. Empty lines or anything after a semicolon
  72. (';') is ignored. Parameters that can be set are:
  73. 1. AutoPan - Boolean flag. If TRUE, any operation involves in the drawing
  74.    space (such as move, copy or draw) will auto-pan if cursor exists screen.
  75.    If FALSE, Panning option must be used manually to perform this operation.
  76.    This Boolean flag can be set from the Status main menu.
  77.    For example:
  78.    AutoPan    TRUE
  79. 2. ATKeyboard - Boolean flag. If TRUE, it is assumed AT style keyboard bios
  80.    calls (also known as Enhanced keyboard - if you have F11/F12 on your
  81.    keyboard, good chance you can set this to TRUE). This will enable using
  82.    more complex scan codes, not supported by regular keyboard (such as
  83.    F11/F12). Note however it may HANG your system if it is not so.
  84.    For example:
  85.    ATKeyboard    FALSE
  86. 3. HVLines - Boolean flag. If TRUE, lines are coerced to be vertical/horizontal
  87.    only. This Boolean flag can be set from the Status main menu.
  88.    For example
  89.    HVLines    TRUE
  90. 4. SnapDistance    - Integer value. Sets the distance in drawing space of points
  91.    to be snapped. You probably do not want to change this, especially not in
  92.    the middle of a drawing. This Integer value can be set from Status main
  93.    menu.
  94.    For example:
  95.    SnapDistance    16
  96. 5. Mouse - Boolean flag. Inform the system if a Mouse exists or not.
  97.    If this is commented out, auto detection will be used.
  98.    For example:
  99.    Mouse    TRUE
  100. 6. GraphDriver - Set what type of display device to use. The following values
  101.    are valid (same as TC 2.0 graphics.h file if that helps):
  102.    0 - Auto detect (default, so you can delete this one...)
  103.    3 - EGA
  104.    4 - EGA64
  105.    5 - EGAMONO
  106.    7 - Hercules.
  107.    9 - VGA
  108.    For example:
  109.    GraphDriver    0
  110. 7. Libraries - String value. A list of libraries (neither file type, nor full
  111.    path is required - only the name) to automatically load on restart,
  112.    separated with commas (','). Libraries can also be loaded using the libs
  113.    main menu, and/or will be automatically loaded when a data files needs them.
  114.    For example:
  115.    Libraries    "TTL4LS,EPROM,GENERAL,LINEAR"
  116.  
  117.  
  118. If this configuration file is not found in any of the path directories,
  119. a message is printed to the screen, and internal defaults will be used
  120. instead. This is NOT recommended - fix that as soon as you can, as the
  121. internal defaults are not guaranteed to be anything specific.
  122.  
  123. EEDraw.bnd
  124. ----------
  125.  
  126. This file allow you to bind any of the program internal functions (as can be
  127. selected from any of the menus) to a specific key. Note some keys are
  128. hard-bound and can not be used to rebind function (such as arrow keys - see
  129. Functionality below). The format of the file is following.
  130. Empty lines, or lines begin with a semicolon (';') are ignored.
  131. Every line consists of three items: "FunctionName KeyName ScanCode"
  132. seperated by white spaces. FunctionName are the fixed names this program
  133. supports (see blow). KeyName is the name of the key ("AltK" for example) this
  134. FunctionName will be bound to. Up to 4 characters are allowed for KeyName, and
  135. this name will appear in the main menu which contains this function. ScanCode
  136. is the scan code of the bounded key. If the key is regular ascii code, this
  137. ascii code is the scan code. If it is extended code (such as F? keys are), add
  138. 256 to this value. All numbers should be in decimal.
  139. Currently available FunctionName(s) and their associated main menu (see
  140. Functionality section below for their description):
  141.  
  142. File menu:
  143.     LoadEEDFile
  144.     SaveEEDFile
  145.     SaveEEDAsOld
  146.     SaveEEDAsNew
  147.     ClearAll
  148.     Directory
  149.     ChangeDir
  150.     ShellToDos
  151.     ExitEEdraw
  152.  
  153. Display menu:
  154.     Panning
  155.     ZoomOut
  156.     ZoomIn
  157.     ZoomReset
  158.     RedrawAll
  159.  
  160. Libs menu:
  161.     LoadLibrary
  162.     FreeLibrary
  163.     ViewLibrary
  164.     DirLibrary
  165.  
  166. Draw menu:
  167.     DrawLine
  168.     DrawBus
  169.     DrawConnect
  170.     DrawText
  171.     DrawLibItem
  172.  
  173. Modify menu:
  174.     ModifyMove
  175.     ModifyCopy
  176.     EditLibItem
  177.     ModifyDelete
  178.     ModifyUnDel
  179.  
  180. Status menu:
  181.     MemoryStatus
  182.     SetDrawText
  183.     SetHVLines
  184.     SetSnapFactor
  185.     SetZoomFactor
  186.     SetAutoPan
  187.  
  188. Other (not in any menu):
  189.     SameAgain
  190.  
  191. 4. Functionality
  192. ----------------
  193.  
  194. This section describes the currently available function set, and main modes.
  195. Although most of the keys can be bind to any function as described in the
  196. Setup section (EEDraw.bnd description), some of them are hard-bound and could
  197. not be used:
  198. A. All the numeric keypad (arrow keys, home, PhUp, End, PgDn). These keys
  199.    are used to move to cursor (even if mouse exists).
  200. B. All the numeric keys but 0 (used by shift-arrows).
  201. C. Enter (or Return) key. this is the SELECT key.
  202. D. Space bar. This is the ABORT key.
  203.  
  204. The arrow keys are used to move the cursor (co-exist with mouse), and if
  205. shifted, move cursor faster. In addition to the cursor movement, two
  206. important keys are defined as well:
  207. A. SELECT key, hard-bound to the Enter (or Return), and left button on mouse,
  208.    if such exists.
  209. B. ABORT key, hard-bound to the Space bar, and right button on mouse if such
  210.    exists.
  211.  
  212. All the functions described below uses these hard-bound keys.
  213.  
  214. Few type of interactors are defined to query the user:
  215. A. Yes/No question - prompt the question, with Yes and No buttons. The SELECT
  216.    key will select the answer. ABORT key is ignored.
  217. B. Continue question - prompt a message, and wait for SELECT on the continue
  218.    button. ABORT key is ignored.
  219. C. String question - prompt a message, and waits for string input. This
  220.    facilitates a full line editor as follows (independent of key bindings):
  221.    * Right and Left arrows will move right and left.
  222.    * Insert toggles Insert/Overwrite modes (toggles cursor shape).
  223.    * Delete deletes current character.
  224.    * Backspace deletes character to the back.
  225.    * Home and End will move to beginning/end of string respectively.
  226.    * Esc clears the current string.
  227.    * Return will terminate editing.
  228. D. List question - prompt with a list of items (files names for example).
  229.    An item will be picked by the SELECT key if applicative (when viewing
  230.    a directory nothing needs to be picked). ABORT key will usually abort
  231.    the operation, but may have some special operation as well or may be
  232.    ignored.
  233. E. Menu(s) question. Two types of menus are used - top down from the main menu,
  234.    and pop up on special occasions. Menus behave very much like List questions.
  235.    SELECT key selects menu item while ABORT key usually abort the menu with no
  236.    selection at all.
  237.  
  238. A. File menu:
  239.     LoadEEDFile - Prompt for a file name (List question), and read it
  240.         from the current directory, if SELECT key, abort if ABORT key.
  241.         Note file type must be '.eed'.
  242.     SaveEEDFile - Save currently edited file. This routine can be used
  243.         only after a new file was saved at list once, or it was loaded.
  244.         In both cases, it will be saved on the same name, after
  245.         renaming old one to have '.bak' extension.
  246.         Ask for verification (Yes/No question).
  247.     SaveEEDAsOld - Same as SaveEEDFile, but prompt with list of all '.eed'
  248.         files in current directory, and saved by the name selected if
  249.         SELECT key, or abort if ABORT key.
  250.     SaveEEDAsNew - Same as SaveEEDFile, but prompt for a new file using
  251.         String question.
  252.     ClearAll - Clear all current data. Note libraries are not freed -
  253.         use FreeLibrary to do that.
  254.         Ask for verification (Yes/No question).
  255.     Directory - Display content of current directory as in List question.
  256.         SELECT key is ignored. Use ABORT key to exit this mode.
  257.         Unlike LoadEEDFile, all files are displayed.
  258.     ChangeDir - Prompt with String question for a new directory. Old
  259.         directory is provided to begin with.
  260.     ShellToDos - "Fork" (I wish this was true...) to the DOS O.S. . Type
  261.         'exit' at the DOS prompt to return to EEDraw.
  262.     ExitEEdraw - Exit the Program.
  263.         Ask for verification (Yes/No question).
  264.  
  265.  
  266. Display menu:
  267.     Panning - Allows panning in the drawing space. Prompt for two points:
  268.         reference point and translated point and move such that the
  269.         reference point is at the translated point. This can be used
  270.         for fine panning even when AutoPan (see SETUP, EEDraw.cfg file)
  271.         is enabled. Use SELECT to pick the points, ABORT to abort this
  272.         mode.
  273.     ZoomOut - Zoo out (center of screen remains at center) by factor of 2.
  274.         Note that if you zoom out from regular zoom factor, text will
  275.         disappear as it can not be shrinked. You can enable text from
  276.         the Status menu manually.
  277.     ZoomIn - Zoo in (center of screen remains at center) by factor of 2.
  278.     ZoomReset - Reset Zoom value to the regular zoom factor and center the
  279.         Drawing space.
  280.     RedrawAll - Redraw all screen.
  281.  
  282. Libs menu:
  283.     LoadLibrary - Prompt for a file name (List question), and read it
  284.         from the current directory, if SELECT key, abort if ABORT key.
  285.         Note file type must be '.lib'.
  286.     FreeLibrary - Prompt with all loaded libraries with List question,
  287.         and free the selected one if SELECT key, abort if ABORT.
  288.     ViewLibrary - Prompt with all loaded libraries with List question,
  289.         If a library has been selected via SELECT key, prompt with
  290.         all parts defined in this library again with a List question.
  291.         Selection of a part with SELECT key will display it. ABORT will
  292.         go back to library List question, which can be aborted again
  293.         via the ABORT key.
  294.     DirLibrary - Display content of current directory library files
  295.         (those with '.lib' extension) as in List question.
  296.         both SELECT key and ABORT key can be used to exit this mode.
  297.  
  298. Draw menu:
  299.     DrawLine - Enter drawing mode. If HVLines is set (see SETUP, EEDraw.cfg
  300.         section), only horizontal/vertical lines are allowed.
  301.         In this mode, pressing SELECT key will insert a new point
  302.         in the created polyline and pressing ABORT will delete the
  303.         last entered point.
  304.         If however, there are no points at all in the current polyline,
  305.         ABORT key will abort this mode.
  306.         Also, pressing SELECT twice (at the SAME place as the last
  307.         point entered) will complete the drawn polyline.
  308.     DrawBus - Same as DrawLine, but draw thicker lines.
  309.     DrawConnect - Draw a connection junction, if SELECT key is pressed,
  310.         or abort if ABORT key is pressed.
  311.     DrawText - Prompt for a string with String question, and then position
  312.         the text horizontally or vertically. If the positioning is
  313.         terminated with ABORT it is ignored, SELECT will update.
  314.     DrawLibItem - Prompt for a part name with String question. If this is
  315.         not the first invocation to this mode, last part will be
  316.         used as default string (remember you can always use Esc to
  317.         clear to a fresh line). If part is found (name is exactly the
  318.         same as    shown in the ViewLibrary function above), a pop up
  319.         menu will allow to rotate it 90 degree CW or CCW or mirror it.
  320.         Successive SELECT will transform the library item to the
  321.         desired orientation, while ABORT will abort this DrawLibItem
  322.         mode. SELECT PlaceIt (top menu entry) will allow to position
  323.         the part in the exact place.
  324.         The user is also prompt for Chip (i.e. 74LS00) and Part (IC7)
  325.         names if they are required/allowed (see Appendix on library
  326.         file definition) for this part. These are positioned similar
  327.         to the way DrawText position its text, except that Chip name
  328.         is already known and can not be modified.
  329.  
  330. Modify menu:
  331.     This menu is heavily based on Picking objects. a single object is
  332.     picked if the cursor is on an object. The cursor is considered on an
  333.     object if one of the following:
  334.     A. Line and Bus items: the cursor is on one of the Line/Bus end points
  335.        (any point that was set by SELECT when it was created, including
  336.        internal points).
  337.     B. Connect item: the cursor is on the Connect center.
  338.     C. Text item: the cursor is inside the smallest axes parallel bounding
  339.        box holding this text.
  340.     D. Library item: the cursor is on any polyline end point (including
  341.        internal points).
  342.  
  343.     The picked object will blink. SELECT key will select it, ABORT key
  344.     will cause the next object, if such exists at this position, to blink
  345.     until one is selected via the SELECT key, or no more objects can be
  346.     picked.
  347.  
  348.     If no object at all is found at the cursor point, the point is used
  349.     as first corner of a box to pick a set of objects - a second SELECT
  350.     key will pick the second corner of the box, ABORT key will abort this
  351.     mode. All objects intersect with the defined box, will be considered
  352.     picked, with no more verification.
  353.  
  354.     ModifyMove - Pick object(s), and move it(them) to a new position.
  355.         Once the object(s) is(are) picked, SELECT key will set
  356.         its(their) new    position, ABORT will leave it unchanged.
  357.     ModifyCopy - Pick object(s), and copy it(them) to a new position.
  358.         Once the object(s) is(are) picked, SELECT key will place
  359.         it(them) in new position, ABORT will abort the copy operation.
  360.     EditLibItem - if the picked object(s) is a single library item, allows
  361.         editing one of the following (via a pop up menu):
  362.         A. Reposition Chip name (if this chip is allowed to have one).
  363.         B. Reposition Part name (if this chip is allowed to have one).
  364.         C. Modify the Part name (if this chip is allowed to have one).
  365.         Picking one of the above via SELECT will allow text
  366.         positioning or text editing (via String question). ABORT will
  367.         abort this EditLibItem mode.
  368.     ModifyDelete - Delete the picked object(s). The deleted object(s) is
  369.         (are) saved in a special 10 places deep stack, and deleted
  370.         items can be undeleted using the ModifyUnDel function.
  371.         Each of the 10 placed stack can hold any result of a pick
  372.         no matter how many objects are inside.
  373.         This Delete/Undelete mechanism can be used to cut and paste
  374.         even between different files - this stack is never cleared.
  375.     ModifyUnDel - Undelete the last delete operation (see ModifyDelete),
  376.         from the delete stack (LIFO).
  377.  
  378.  
  379. Status menu:
  380.     MemoryStatus - prompt with a continue question, on the current free
  381.         memory. Getting close to zero is unsafe!
  382.     SetDrawText - By default if zooming out from the default zoom value,
  383.         no text is displayed (the text should be shrinked but is
  384.         probably unreadable in this raster system). You can toggle
  385.         viewing text in this zoom out state using this flag.
  386.         Uses Yes/No question.
  387.     SetHVLines - Allow drawing of diagonal lines as well if set to FALSE.
  388.         Uses Yes/No question.
  389.     SetSnapFactor - Set the invisible grid the cursor position is
  390.         snapped to. You probably do not want to change this,
  391.         especially not in the middle of file editing.
  392.         Uses String question, and display current Snap factor to
  393.         begin with.
  394.     GetZoomFactor - Allow you to see the current zoom factor
  395.     SetAutoPan - allow to set the AutoPan variable - If TRUE moving the
  396.         cursor out of the screen boundaries during drawing
  397.         (such as move, copy or draw) will auto-pan.
  398.  
  399. Other (not in any menu):
  400.     SameAgain - Execute the last function again.
  401.         If you have a mouse with 3 buttons, pressing middle button
  402.         will execute this command (hard-bound).
  403.         if you have a mouse with 2 buttons, pressing both buttons
  404.         will execute this command (hard-bound).
  405.  
  406. 5. Spacial Notes
  407. ----------------
  408.  
  409. Designing using A4 page size does not require much memory even when few
  410. libraries are loaded. My system with 640k (-70k of the O.S) has almost 300k
  411. free to use (Use the MemoryStatus function to query free memory), when all the
  412. provided libraries are loaded. I guess you will need to work hard to get down
  413. to less than 100k. If you succeed and/or you system has less than 640k memory,
  414. make yourself a rule: never to go below 64k of free memory. The program need
  415. about 32k of temporary memory for the different operations, and getting close
  416. to that is dangerous! When you approach 32k of free memory, you will be
  417. issued a warning (Continue question):
  418.  
  419. Free memory too small - dangerous to continue.
  420.  
  421. Every 30 second (if you do any operation in that time). Continuing at this
  422. point may result with loss of all your work - the program will exit when no
  423. more memory will be available!
  424.  
  425. Yes, I know this is ugly, but you eat what you cook, right? I used this
  426. program quite a bit, and never succeeded to go below 200k, so why bather.
  427.  
  428.  
  429. -------------------------------------------------------------------------------
  430.  
  431.  
  432. Appendix A. Glossary
  433. --------------------
  434.  
  435. SELECT Key - The key used for the select operation. Currently hard-bound to
  436.     Enter (or Return), and to the Left mouse button if mouse exists.
  437.  
  438. ABORT Key - The key used for the abort operation. Currently hard-bound to
  439.     Space bar, and to the Right mouse button if mouse exists.
  440.  
  441. Screen Space - the space of the display device. Depends on the graphic
  442.     device coordinates on the selected mode.
  443.  
  444. Drawing Space - the space in which the drawing objects exist. This space
  445.     is bounded by a wide box (zoom out twice to see this box on an
  446.     empty drawing) so it will fit into an A4 (8.5" by 11") page in both
  447.     the EPSON and the PostScript printer drivers (see Appendix B).
  448.  
  449.  
  450. Appendix B. Printer drivers
  451. ---------------------------
  452.  
  453. The following printer drivers are available (see also installation section):
  454.  
  455. 1. EPSON printer.
  456.  
  457.     Usage: EEDEpson [-g] [-r] [-1] [-2] [-3] [-d] [-z] FileName[.EED]
  458.  
  459.     Options: [-g] Output goes to standard output as 1 bit per pixel (B&W)
  460.             GIF file.
  461.          [-r] Output goes to standard output as raw data.
  462.          [-1], [-2], [-3] Output goes to LPT1:, LPT2:, LPT3:
  463.             respectively.
  464.          [-d] if Output goes to Epson printer - print in double the
  465.             density.
  466.          [-z] Print version number and usage.
  467.  
  468.         * if neither [-g], not [-r] are specified, output is in Epson
  469.           compatible format (default).
  470.         * If non of [-1], [-2], [-3] are specified, output goes to
  471.           standard output.
  472.         * [-1], [-2], [-3], [-d] are ignored if [-g] or [-r] are
  473.           specified.
  474.  
  475. 2. PostScript Printer.
  476.  
  477.     Usage: EED-PS [-z] FileName[.EED]
  478.  
  479.     Options: [-z] Print version number and usage.
  480.  
  481.  
  482. Appendix C. Library file format
  483. -------------------------------
  484.  
  485.     This appendix describes the format of the library file. It contains
  486. all the information required to create your own libraries. The libraries are
  487. designed to be parametric only. I.e. no bitmaps are supported. You can look
  488. at the given libraries while reading this appendix for better understanding.
  489.  
  490.     Empty lines and lines starts with '#' are ignored. In order to identify
  491. a library as such the first line must start with 'EEDRAW-LIB'. Following in
  492. the same line is version number as 'Version X.X'. Currently 'X.X' equal '1.0'
  493. and is ignored. However it may be used in future versions, to ensure backward
  494. compatibility. Following are the parts themselves. Each part definition begins
  495. as follows:
  496.  
  497. DEF Name Prefix #Pins TextInside DrawNum #Units #PinsPerUnit
  498.  
  499. Were    1. Name is the Part name, i.e. "74LS00". If Name is prefixed with "~"
  500.        (for example "~74LS00") then the name is not drawn, nor it will be
  501.        accessible to the user.
  502.     2. Prefix is the prefix to be used in chip name (IC, R, C etc.). If
  503.        prefix is "~", then no prefix is drawn.
  504.     3. #Pins is the same as number of entries in PINS (see below),
  505.        i.e 14 for 74LS00.
  506.     4. TextInside is 0 if pin text is to be put outside as well (as the
  507.        pin numbers are), otherwise inside. You may put any positive
  508.        integer there to scale the distance inside. 10 is a good start.
  509.     5. DrawNum is 1 if pin numbers are to be drawn, 0 otherwise.
  510.     6. #Units holds number of multiple entries. For example 74LS00 has
  511.        4 units (Nand gates). For no multiple units put 0 here.
  512.     7. #PinsPerUnit holds number of entries for one unit if more than
  513.        one unit per part. If #Units is 0, it is ignored.
  514.  
  515. The part definition follows by the following blocks, in any order:
  516.  
  517. 1. DRAW/ENDDRAW - defines how to draw the part. This block is optional, and
  518.    a simple box with half the pins on each side is drawn if this block is
  519.    not defined. The following commands are supported:
  520.    A x y r t1 t2        (Define ARC at x, y, radius r, angles t1 to t2)
  521.    P n x y x y x y... [F]    (Define a POLYLINE of (any) length n)
  522.    C x y r            (Define a CIRCLE at x, y, radius r)
  523.    S x1 y1 x2 y2        (Define a square (Not filled))
  524.    T x y h str            (Define a text string at x, y (see below))
  525.    L x1 y1 x2 y2 [I]        (Define terminal line to part - see PINS)
  526.  
  527.    Notes:
  528.    A. a text string (S) with be drawn horizontally if h is 1, vertically if 0.
  529.       Also '~' characters will be replaced by spaces, or this provides a
  530.       mechanism to have spaces in the string.
  531.    B. If the polyline (P) is postfixed by a F, the polyline should define a
  532.       closed shape that will be filled. The first point of the polyline must
  533.       be identical to last one in this case.
  534.    C. If the line (L) is postfixed by an I, this line is assumed to define
  535.       negative logic, and a small circle will be drawn to express that.
  536.    D. The number of L definitions should be exactly the same as #Pins in the
  537.       DEFS line if #Units = 0, and equal #PinsPerUnit if #Units != 0.
  538.       The order will match to the order in the PINS/ENDPINS block if #Units = 0
  539.       and to the order in the MULTI/ENDMULTI if #Units != 0.
  540.    E. Arcs (A) should not exceed 180 degrees, are CCW, and 0 degrees is at
  541.       3 o'clock.
  542.  
  543. 2. PINS/ENDPINS - defines the names (strings) associated with each pin. This
  544.    block must always exists, and it is the minimum required to define a part.
  545.    The block holds #Pins lines each hold the string defines that pin. This
  546.    order must be the same as define in the DRAW/ENDDRAW as L commands
  547.    (if DRAW/ENDDRAW block is defined), from pin 1 to #Pins. Empty lines
  548.    are allowed and defined with only '~' in them. Not sign for X (vertical bar
  549.    above it) is defined by ~X.
  550.  
  551. 3. MULTI/ENDMULTI - This block must exists iff #Unit != 0. Each line in this
  552.    provides a mapping from L terminal definitions in the DRAW/ENDDRAW block
  553.    to the pin numbers in a multi unit part. This is required as same L
  554.    terminal will have different pin number in different Units.
  555.    Each line in this block holds the pin numbers of a unit.
  556.    Number of lines should be equal to number units in part.
  557.  
  558. Part definition terminates with the ENDDEF line.
  559.  
  560. General Notes:
  561.  
  562. 1. All parts are scaled up to easy the access of a single pin (by 16, but you
  563.    should not wonder about it too much - its internal mapping to drawing
  564.    space).
  565. 2. Library file can hold any number of parts (at list one though...).
  566. 3. Library file must have '.lib' extension, to be usable by the EED* programs.
  567.  
  568.  
  569. Gershon Elber
  570. Email: gershon@cs.utah.edu